This file is part of the supplementary material of the manuscript: Didino, D., Brandtner, M., & Knops, A. (2021). No influence of masked priming on the multiplication fact retrieval in a result verification task.
This script reports the analysis for experiment 1.
Dataset loaded: exp1_data.rds (data of result verification task)
Load libraries, my functions (my_functions folder) and data (data/processed folder):
library('ggpubr')
#> Loading required package: ggplot2
library('here')
#> here() starts at D:/mult_prime
library('kableExtra')
# library('knitr')
library('plotly')
#>
#> Attaching package: 'plotly'
#> The following object is masked from 'package:ggplot2':
#>
#> last_plot
#> The following object is masked from 'package:stats':
#>
#> filter
#> The following object is masked from 'package:graphics':
#>
#> layout
library('ggridges')
library('tidyverse')
#> -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
#> v tibble 3.1.0 v dplyr 1.0.5
#> v tidyr 1.1.3 v stringr 1.4.0
#> v readr 1.4.0 v forcats 0.5.1
#> v purrr 0.3.4
#> -- Conflicts ------------------------------------------ tidyverse_conflicts() --
#> x dplyr::filter() masks plotly::filter(), stats::filter()
#> x dplyr::group_rows() masks kableExtra::group_rows()
#> x dplyr::lag() masks stats::lag()
library('BayesFactor')
#> Loading required package: coda
#> Loading required package: Matrix
#>
#> Attaching package: 'Matrix'
#> The following objects are masked from 'package:tidyr':
#>
#> expand, pack, unpack
#> ************
#> Welcome to BayesFactor 0.9.12-4.2. If you have questions, please contact Richard Morey (richarddmorey@gmail.com).
#>
#> Type BFManual() to open the manual.
#> ************
# Load my functions
source(here('funcs', 'load_my_functions.R'))
# Load data
exp1 <- readRDS(here('data', 'processed', 'exp1_data.rds'))
Exclude outliers
exp1 <-
exp1 %>%
filter(outlier == FALSE)
RTs distribution across prime conditions:
plot_1 <-
exp1 %>%
ggplot(aes(RT, fill = prime_cond)) +
geom_density(alpha = 0.6) +
facet_wrap(~ problem_size, ncol = 2)
ggplotly(plot_1)
Comparison between the distribution of the RTs of the neutral condition and the other conditions. The neutral condition is replicated next to each condition to facilitate the comparison.
exp1_rainplot <-
exp1 %>%
return_means(RT, c('problem_size', 'sj', 'prime_cond'), .) %>%
return_df_plot(problem_size,
prime_cond,
'neutral')
#> `summarise()` has grouped output by 'problem_size', 'sj'. You can override using the `.groups` argument.
#> Joining, by = c("sj", "DV", "neutral")
#> Joining, by = c("sj", "DV", "neutral")
#> Joining, by = c("sj", "DV", "neutral")
#> Joining, by = c("sj", "DV", "neutral")
#> Joining, by = c("sj", "DV", "neutral")
#> Joining, by = c("sj", "DV", "neutral")
#> Joining, by = c("sj", "DV", "neutral")
#> Joining, by = c("sj", "DV", "neutral")
#> Joining, by = c("sj", "DV", "neutral")
#> Joining, by = c("sj", "DV", "neutral")
# Set H0/H1 position
segs <-
tribble(
~problem_size, ~cond, ~neutral, ~lab, ~ys,
'Large', 'identity', 'Neutral', 'H1', 950,
'Large', 'neigh_inc', 'Neutral', 'H1', 950,
'Large', 'unrel_con', 'Neutral', 'H0', 950,
'Large', 'unrel_inc', 'Neutral', 'H1', 950,
'Small', 'identity', 'Neutral', 'H1', 950,
'Small', 'neigh_inc', 'Neutral', 'H1', 950,
'Small', 'unrel_con', 'Neutral', 'H1', 950,
'Small', 'unrel_inc', 'Neutral', 'H1', 950)
# Plot
prime_plot <-
list(exp1_RT_distr =
exp1_rainplot %>%
mutate(
neutral = if_else(neutral == 'neutral', 'Neutral', 'Other'),
problem_size = if_else(problem_size == 'large', 'Large', 'Small')
) %>%
ggplot(aes(x = cond, y = DV, fill = neutral)) +
geom_flat_violin(aes(fill = neutral),
position = position_nudge(x = 0.18, y = 0),
adjust = 1.5,
trim = FALSE,
alpha = .5,
colour = NA) +
geom_point(aes(x = as.numeric(factor(cond)) - 0.23, y = DV, colour = neutral),
position = position_jitter(width = 0.05, height = 0),
size = 1,
shape = 20) +
geom_boxplot(aes(x = cond, y = DV, fill = neutral),
outlier.shape = NA,
alpha = 0.5,
width = 0.3,
colour = 'black') +
geom_text(data = segs,
aes(x = cond, y = ys, label = lab),
size = 3.5) +
geom_vline(xintercept = c(c(0:3) + 1.65),
linetype = 'solid',
color = 'grey80',
size = 0.3) +
# scale_colour_brewer(palette = 'Dark2') +
# scale_fill_brewer(palette = 'Dark2') +
labs(x = 'Prime condition', y = 'RTs') +
facet_wrap(~ problem_size, ncol = 1, strip.position = 'right') +
theme(
#panel.grid.major = element_blank(),
#panel.grid.minor = element_blank(),
panel.background = element_blank(),
panel.grid.major.y = element_line(colour = 'grey90'),
panel.grid.minor.y = element_line(colour = 'grey90'),
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
legend.title = element_blank(),
strip.background = element_blank(),
text = element_text(size = 15),
axis.text = element_text(size = 12, colour = 'black'),
axis.text.x = element_text(angle = 45, hjust = 1),
# axis.title = element_text(size = 14),
panel.border = element_rect(colour = 'black', fill = NA, size = 0.5)
)
)
# show plot
prime_plot$exp1_RT_distr
# Plot - Black and white version
prime_plot$exp1_RT_distr_bw <-
exp1_rainplot %>%
mutate(
neutral = if_else(neutral == 'neutral', 'Neutral', 'Other'),
problem_size = if_else(problem_size == 'large', 'Large', 'Small')
) %>%
ggplot(aes(x = cond, y = DV, fill = neutral)) +
geom_flat_violin(position = position_nudge(x = 0.15, y = 0),
adjust = 1.5,
trim = FALSE,
alpha = .5,
colour = 'black') +
geom_point(aes(x = as.numeric(factor(cond)) - 0.2, y = DV),
position = position_jitter(width = 0.05, height = 0),
size = 1,
shape = 21) +
geom_boxplot(outlier.shape = NA,
alpha = 0.5,
width = 0.25) +
geom_text(data = segs,
aes(x = cond, y = ys, label = lab),
size = 3.5) +
geom_vline(xintercept = c(c(0:3) + 1.65),
linetype = 'solid',
color = 'grey80',
size = 0.3) +
scale_fill_manual(values = c('white', 'grey20')) +
scale_color_manual(values = c('white', 'grey20')) +
labs(x = 'Prime condition', y = 'RTs') +
facet_wrap(~ problem_size, ncol = 1, strip.position = 'right') +
theme(
#panel.grid.major = element_blank(),
#panel.grid.minor = element_blank(),
panel.background = element_blank(),
panel.grid.major.y = element_line(colour = 'grey90'),
panel.grid.minor.y = element_line(colour = 'grey90'),
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
legend.title = element_blank(),
strip.background = element_blank(),
text = element_text(size = 15),
axis.text = element_text(size = 12, colour = 'black'),
axis.text.x = element_text(angle = 45, hjust = 1),
# axis.title = element_text(size = 14),
panel.border = element_rect(colour = 'black', fill = NA, size = 0.5)
)
Bayes factors are computer with the package BayesFactor.
tribble(
~BF, ~Evidence,
'0-3', 'Anectodal',
'3-10', 'Moderate',
'10-30', 'Strong',
'30-100', 'Very_strong',
'>100', 'Decisive') %>%
make_table('Bayes factor interpretation')
| BF | Evidence |
|---|---|
| 0-3 | Anectodal |
| 3-10 | Moderate |
| 10-30 | Strong |
| 30-100 | Very_strong |
| >100 | Decisive |
Compute Bayes factors
exp1_bf <-
exp1 %>%
return_BF_ttest(problem_size,
prime_cond,
'neutral',
RT,
ID = 'sj')
exp1_bf
#> # A tibble: 10 x 10
#> problem_size prime_cond.x data.x aggr_data.x prime_cond.y data.y
#> <chr> <chr> <list<tibbl> <list> <chr> <list<tibb>
#> 1 large identity [606 x 17] <tibble[,2] ~ neutral [592 x 17]
#> 2 large neigh_con [288 x 17] <tibble[,2] ~ neutral [592 x 17]
#> 3 large neigh_inc [292 x 17] <tibble[,2] ~ neutral [592 x 17]
#> 4 large unrel_con [294 x 17] <tibble[,2] ~ neutral [592 x 17]
#> 5 large unrel_inc [290 x 17] <tibble[,2] ~ neutral [592 x 17]
#> 6 small identity [645 x 17] <tibble[,2] ~ neutral [644 x 17]
#> 7 small neigh_con [317 x 17] <tibble[,2] ~ neutral [644 x 17]
#> 8 small neigh_inc [314 x 17] <tibble[,2] ~ neutral [644 x 17]
#> 9 small unrel_con [302 x 17] <tibble[,2] ~ neutral [644 x 17]
#> 10 small unrel_inc [315 x 17] <tibble[,2] ~ neutral [644 x 17]
#> # ... with 4 more variables: aggr_data.y <list>, BF_test <list>, bf <dbl>,
#> # error <dbl>
exp1_bf <-
exp1_bf %>%
select(problem_size, prime_cond.x, bf) %>%
rename(prime_cond = prime_cond.x, BF_10 = bf) %>%
mutate(
BF_01 = 1 / BF_10
)
# # Print results in a file
# exp1_bf %>%
# mutate(across(where(is.numeric), ~round(.x, digits = 2))) %>%
# print_result('exp1_BF')
#
# # Show results
# exp1_bf %>%
# make_table('Bayes factor')
Calculate statistics for RT
# Calculate statistics
exp1_stats <-
exp1 %>%
return_stats(c('problem_size', 'prime_cond'))
#> `summarise()` has grouped output by 'sj', 'problem_size'. You can override using the `.groups` argument.
#> `summarise()` has grouped output by 'problem_size'. You can override using the `.groups` argument.
# Add difference between prime means and neutral prime mean
exp1_stats <-
left_join(
exp1_stats,
exp1_stats %>%
filter(prime_cond == 'neutral') %>%
select(problem_size, Mean) %>%
rename(Diff = Mean)
) %>%
mutate(
Diff = Mean - Diff
)
#> Joining, by = "problem_size"
# # Print results in a file
# exp1_stats %>%
# mutate(across(where(is.numeric), round)) %>%
# print_result('exp1_stats_RTs')
#
# # Show results
# exp1_stats %>%
# make_table('Statistics (prime condition by problem size)')
Table with RTs mean, standard deviation and standard error (aggregated on subject and condition), and Bayes factors:
exp1_table <-
full_join(
exp1_stats %>%
mutate(across(where(is.numeric), ~round(.x, digits = 0))),
exp1_bf %>%
mutate(across(where(is.numeric), ~round(.x, digits = 2))))
#> Joining, by = c("problem_size", "prime_cond")
# Print results in a file
exp1_table %>%
# mutate(across(where(is.numeric), ~round(.x, digits = 2))) %>%
print_result('exp1_table')
# Show results
exp1_table %>%
make_table('Table1')
| problem_size | prime_cond | N_sj | Mean | SD | SE | Diff | BF_10 | BF_01 |
|---|---|---|---|---|---|---|---|---|
| large | identity | 28 | 555 | 100 | 19 | -43 | 129.00 | 0.01 |
| large | neigh_con | 28 | 622 | 113 | 21 | 25 | 2.93 | 0.34 |
| large | neigh_inc | 28 | 645 | 106 | 20 | 47 | 2388.08 | 0.00 |
| large | neutral | 28 | 597 | 106 | 20 | 0 | NA | NA |
| large | unrel_con | 28 | 603 | 110 | 21 | 5 | 0.23 | 4.43 |
| large | unrel_inc | 28 | 645 | 125 | 24 | 48 | 70.51 | 0.01 |
| small | identity | 28 | 513 | 84 | 16 | -37 | 203.26 | 0.00 |
| small | neigh_con | 28 | 573 | 92 | 17 | 23 | 1.43 | 0.70 |
| small | neigh_inc | 28 | 575 | 103 | 19 | 24 | 5.03 | 0.20 |
| small | neutral | 28 | 551 | 88 | 17 | 0 | NA | NA |
| small | unrel_con | 28 | 600 | 114 | 22 | 50 | 334.14 | 0.00 |
| small | unrel_inc | 28 | 590 | 109 | 21 | 40 | 83.18 | 0.01 |
# Set bar colors ("neutral" is the 4th and the 10th)
bar_colors <- c('gray80', 'gray80', 'gray80', 'gray40', 'gray80', 'gray80',
'gray80', 'gray80', 'gray80', 'gray40', 'gray80', 'gray80')
# Set H0/H1 position
segs <-
tribble(
~problem_size, ~prime_cond, ~lab, ~ys,
'large', 'identity', 'H1', 510,
'large', 'neigh_inc', 'H1', 510,
'large', 'unrel_con', 'H0', 510,
'large', 'unrel_inc', 'H1', 510,
'small', 'identity', 'H1', 540,
'small', 'neigh_inc', 'H1', 510,
'small', 'unrel_con', 'H1', 510,
'small', 'unrel_inc', 'H1', 510)
# plot prime type
prime_plot$exp1_box <-
exp1_stats %>%
mutate(
prime_cond = factor(
prime_cond,
levels = c('identity', 'neutral', 'neigh_con', 'neigh_inc', 'unrel_con', 'unrel_inc')
)) %>%
ggplot(aes(x = prime_cond, y = Mean, fill = prime_cond)) +
geom_bar(stat = 'identity',
fill = bar_colors,
width = 0.6,
show.legend = FALSE) +
geom_errorbar(
aes(group = prime_cond, ymin = Mean - SE, ymax = Mean + SE),
width = 0.07,
position = position_dodge(0.9)) +
geom_text(data = segs,
aes(x = prime_cond, y = ys, label = lab),
size = 3) +
coord_cartesian(ylim = c(500, 675)) +
labs(x = 'Prime cond', y = 'Mean RTs') +
facet_wrap(~problem_size, ncol = 1) +
theme(
# panel.grid.major = element_blank(),
# panel.grid.minor = element_blank(),
panel.background = element_blank(),
panel.grid.major.y = element_line(colour = 'grey90'),
panel.grid.minor.y = element_line(colour = 'grey90'),
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
text = element_text(size = 15),
axis.text = element_text(size = 12, colour = 'black'),
axis.text.x = element_text(angle = 45, hjust = 1),
# axis.title = element_text(size = 14),
panel.border = element_rect(colour = 'black', fill = NA, size = 0.5))
# show plot
prime_plot$exp1_box
# Set asterisk position
segs <-
tribble(
~problem_size, ~prime_cond, ~lab, ~ys,
'large', 'identity', '>100', 95,
'large', 'neigh_con', '', 95,
'large', 'neigh_inc', '>100', 95,
'large', 'unrel_con', '', 95,
'large', 'unrel_inc', '', 95,
'small', 'identity', '>100', 95,
'small', 'neigh_con', '', 95,
'small', 'neigh_inc', '', 95,
'small', 'unrel_con', '>100', 95,
'small', 'unrel_inc', '', 95,
)
# plot prime type
prime_plot$exp1_bf <-
exp1_bf %>%
mutate(
prime_cond = factor(
prime_cond,
levels = c('identity', 'neigh_con', 'neigh_inc', 'unrel_con', 'unrel_inc')),
BF_10 = case_when(
BF_10 > 100 ~ 100,
TRUE ~ BF_10
)
) %>%
ggplot(aes(x = prime_cond, y = BF_10, fill = prime_cond)) +
geom_bar(stat = 'identity',
fill = 'gray80',
width = 0.6,
show.legend = FALSE) +
geom_text(data = segs,
aes(x = prime_cond, y = ys, label = lab),
size = 3) +
geom_hline(yintercept = c(3, 10, 30, 100),
linetype = 'dashed',
color = 'red',
size = 0.5) +
coord_cartesian(ylim = c(0, 100)) +
labs(x = 'Prime cond', y = bquote('Bayes factor (' ~BF[10]~ ')')) +
facet_wrap(~problem_size, ncol = 1) +
theme(
#panel.grid.major = element_blank(),
#panel.grid.minor = element_blank(),
panel.background = element_blank(),
panel.grid.major.y = element_line(colour = 'grey90'),
panel.grid.minor.y = element_line(colour = 'grey90'),
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
text = element_text(size = 15),
axis.text = element_text(size = 12, colour = 'black'),
axis.text.x = element_text(angle = 45, hjust = 1),
# axis.title = element_text(size = 14),
panel.border = element_rect(colour = 'black', fill = NA, size = 0.5))
NULL
#> NULL
# show plot
prime_plot$exp1_bf
Calculate the t-tests between neutral prime and other conditions (the results are also saved in the folder results)
# prepare conditions to compare in the t-tests
prime_cond_to_comprare <-
list(c('identity', 'neutral'),
c('neigh_con', 'neutral'),
c('neigh_inc', 'neutral'),
c('unrel_con', 'neutral'),
c('unrel_inc', 'neutral'))
# t-tests between prime conditions
exp1_ttests <-
exp1 %>%
group_by(problem_size) %>%
group_nest() %>%
mutate(
ttests = map(
data,
~return_ttest_2samples(RT,
prime_cond,
prime_cond_to_comprare,
c('sj', 'prime_cond'),
.)
)) %>%
select(problem_size, ttests) %>%
unnest(ttests) %>%
mutate(
p_adj = p.adjust(p, method = 'holm'),
Sig_adj = p.adjust(p, method = 'holm') < 0.05
)
#> `summarise()` has grouped output by 'sj'. You can override using the `.groups` argument.
#> `summarise()` has grouped output by 'sj'. You can override using the `.groups` argument.
#> `summarise()` has grouped output by 'sj'. You can override using the `.groups` argument.
#> `summarise()` has grouped output by 'sj'. You can override using the `.groups` argument.
#> `summarise()` has grouped output by 'sj'. You can override using the `.groups` argument.
#> `summarise()` has grouped output by 'sj'. You can override using the `.groups` argument.
#> `summarise()` has grouped output by 'sj'. You can override using the `.groups` argument.
#> `summarise()` has grouped output by 'sj'. You can override using the `.groups` argument.
#> `summarise()` has grouped output by 'sj'. You can override using the `.groups` argument.
#> `summarise()` has grouped output by 'sj'. You can override using the `.groups` argument.
# Print the results in csv and txt files
exp1_ttests %>%
print_result(., 'exp1_ttests')
# Show the table with the statistics
exp1_ttests %>%
make_table('T-tests for experiment 1')
| problem_size | var1 | var2 | mean_var1 | mean_var2 | mean_diff | std_error | t | df | p | sig | Cohen_d_z | Hedges_g_av | p_adj | Sig_adj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| large | identity | neutral | 554.67 | 597.4 | -42.73 | 10.03 | -4.26 | 27 | 0.00 | TRUE | 0.81 | 0.41 | 0.00 | TRUE |
| large | neigh_con | neutral | 622.45 | 597.4 | 25.05 | 9.87 | 2.54 | 27 | 0.02 | TRUE | 0.48 | 0.23 | 0.05 | FALSE |
| large | neigh_inc | neutral | 644.85 | 597.4 | 47.46 | 8.69 | 5.46 | 27 | 0.00 | TRUE | 1.03 | 0.44 | 0.00 | TRUE |
| large | unrel_con | neutral | 602.73 | 597.4 | 5.33 | 10.49 | 0.51 | 27 | 0.62 | FALSE | 0.10 | 0.05 | 0.62 | FALSE |
| large | unrel_inc | neutral | 645.46 | 597.4 | 48.06 | 11.99 | 4.01 | 27 | 0.00 | TRUE | 0.76 | 0.41 | 0.00 | TRUE |
| small | identity | neutral | 513.44 | 550.6 | -37.17 | 8.35 | -4.45 | 27 | 0.00 | TRUE | 0.84 | 0.43 | 0.00 | TRUE |
| small | neigh_con | neutral | 573.18 | 550.6 | 22.58 | 10.53 | 2.14 | 27 | 0.04 | TRUE | 0.41 | 0.25 | 0.08 | FALSE |
| small | neigh_inc | neutral | 574.57 | 550.6 | 23.96 | 8.52 | 2.81 | 27 | 0.01 | TRUE | 0.53 | 0.25 | 0.04 | TRUE |
| small | unrel_con | neutral | 600.22 | 550.6 | 49.62 | 10.66 | 4.66 | 27 | 0.00 | TRUE | 0.88 | 0.48 | 0.00 | TRUE |
| small | unrel_inc | neutral | 590.44 | 550.6 | 39.83 | 9.77 | 4.08 | 27 | 0.00 | TRUE | 0.77 | 0.40 | 0.00 | TRUE |
ggarrange(prime_plot$exp1_RT_distr)
ggsave(here('figures', 'exp1_RTs_distr.tiff'),
width = 9,
height = 5,
dpi = 150) # or dpi = 300
ggarrange(prime_plot$exp1_RT_distr_bw)
ggsave(here('figures', 'exp1_RTs_distr_bw.tiff'),
width = 9,
height = 5,
dpi = 150) # or dpi = 300
ggarrange(prime_plot$exp1_box)
ggsave(here('figures', 'exp1_RTs.tiff'),
width = 8,
height = 6,
dpi = 150) # or dpi = 300
ggarrange(prime_plot$exp1_bf)
ggsave(here('figures', 'exp1_BF.tiff'),
width = 8,
height = 6,
dpi = 150) # or dpi = 300
xfun::session_info()
#> R version 4.0.5 (2021-03-31)
#> Platform: x86_64-w64-mingw32/x64 (64-bit)
#> Running under: Windows 10 x64 (build 19044)
#>
#> Locale:
#> LC_COLLATE=English_United Kingdom.1252
#> LC_CTYPE=English_United Kingdom.1252
#> LC_MONETARY=English_United Kingdom.1252
#> LC_NUMERIC=C
#> LC_TIME=English_United Kingdom.1252
#>
#> Package version:
#> abind_1.4-5 askpass_1.1 assertthat_0.2.1
#> backports_1.2.1 base64enc_0.1.3 BayesFactor_0.9.12-4.2
#> BH_1.75.0.0 blob_1.2.1 boot_1.3.27
#> broom_0.7.6 bslib_0.2.4 callr_3.6.0
#> car_3.0-10 carData_3.0-4 cellranger_1.1.0
#> cli_2.4.0 clipr_0.7.1 coda_0.19-4
#> colorspace_2.0-0 compiler_4.0.5 conquer_1.0.2
#> contfrac_1.1.12 corrplot_0.84 cowplot_1.1.1
#> cpp11_0.2.7 crayon_1.4.1 crosstalk_1.1.1
#> curl_4.3 data.table_1.14.0 DBI_1.1.1
#> dbplyr_2.1.1 deSolve_1.28 digest_0.6.27
#> dplyr_1.0.5 dtplyr_1.1.0 ellipsis_0.3.1
#> elliptic_1.4.0 evaluate_0.14 fansi_0.4.2
#> farver_2.1.0 forcats_0.5.1 foreign_0.8-81
#> fs_1.5.0 gargle_1.1.0 generics_0.1.0
#> ggplot2_3.3.5 ggpubr_0.4.0 ggrepel_0.9.1
#> ggridges_0.5.3 ggsci_2.9 ggsignif_0.6.1
#> glue_1.4.2 googledrive_1.0.1 googlesheets4_0.3.0
#> graphics_4.0.5 grDevices_4.0.5 grid_4.0.5
#> gridExtra_2.3 gtable_0.3.0 gtools_3.8.2
#> haven_2.3.1 here_1.0.1 highr_0.8
#> hms_1.0.0 htmltools_0.5.1.1 htmlwidgets_1.5.3
#> httr_1.4.2 hypergeo_1.2.13 ids_1.0.1
#> isoband_0.2.4 jquerylib_0.1.3 jsonlite_1.7.2
#> kableExtra_1.3.4 knitr_1.33 labeling_0.4.2
#> later_1.1.0.1 lattice_0.20-41 lazyeval_0.2.2
#> lifecycle_1.0.0 lme4_1.1.26 lubridate_1.7.10
#> magrittr_2.0.1 maptools_1.1.1 markdown_1.1
#> MASS_7.3.53.1 Matrix_1.3-2 MatrixModels_0.5-0
#> matrixStats_0.58.0 methods_4.0.5 mgcv_1.8.34
#> mime_0.10 minqa_1.2.4 modelr_0.1.8
#> munsell_0.5.0 mvtnorm_1.1-1 nlme_3.1.152
#> nloptr_1.2.2.2 nnet_7.3.15 numDeriv_2016.8.1.1
#> openssl_1.4.3 openxlsx_4.2.3 parallel_4.0.5
#> pbapply_1.4-3 pbkrtest_0.5.1 pillar_1.6.0
#> pkgconfig_2.0.3 plotly_4.9.3 plyr_1.8.6
#> polynom_1.4.0 prettyunits_1.1.1 processx_3.5.1
#> progress_1.2.2 promises_1.2.0.1 ps_1.6.0
#> purrr_0.3.4 quantreg_5.85 R6_2.5.0
#> rappdirs_0.3.3 RColorBrewer_1.1.2 Rcpp_1.0.6
#> RcppArmadillo_0.10.2.2.0 RcppEigen_0.3.3.9.1 readr_1.4.0
#> readxl_1.3.1 rematch_1.0.1 rematch2_2.1.2
#> reprex_2.0.0 rio_0.5.26 rlang_0.4.10
#> rmarkdown_2.7 rprojroot_2.0.2 rstatix_0.7.0
#> rstudioapi_0.13 rvest_1.0.0 sass_0.3.1
#> scales_1.1.1 selectr_0.4.2 sp_1.4.5
#> SparseM_1.81 splines_4.0.5 statmod_1.4.35
#> stats_4.0.5 stringi_1.5.3 stringr_1.4.0
#> svglite_2.0.0 sys_3.4 systemfonts_1.0.2
#> tibble_3.1.0 tidyr_1.1.3 tidyselect_1.1.0
#> tidyverse_1.3.1 tinytex_0.31 tools_4.0.5
#> utf8_1.2.1 utils_4.0.5 uuid_0.1.4
#> vctrs_0.3.7 viridisLite_0.3.0 webshot_0.5.2
#> withr_2.4.1 xfun_0.22 xml2_1.3.2
#> yaml_2.2.1 zip_2.1.1